package org.jeecg.modules.flow.service;

import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowElement;
import org.jeecg.modules.flow.query.FlowDefQuery;
import org.jeecg.modules.flow.vo.FlowDefTaskVo;
import org.jeecg.modules.flow.vo.FlowDefVo;
import org.jeecg.modules.flow.vo.Page;

import java.util.List;


public interface IFlowDefService {

    /**
     * 获取BpmnModel
     *
     * @param processDefinitionId 流程定义ID
     * @return
     */
    BpmnModel getBpmnModel(String processDefinitionId);

    /**
     * 获取流程节点信息
     *
     * @param definitionId 流程ID
     * @param processId    子流程ID
     * @return
     */
    List<FlowElement> getFlowElements(String definitionId, String processId);

    /**
     * 获取流程节点信息
     *
     * @param definitionId 流程定义ID
     * @return
     */
    List<FlowElement> getFlowElements(String definitionId);

    /**
     * 获取流程任务节点信息
     *
     * @param processId
     * @return
     */
    List<FlowDefTaskVo> getProcessTaskNodes(String processId);

    /**
     * 根据流程名称模糊查询流程信息
     *
     * @param processName
     * @return
     */
    List<FlowDefVo> likeProcessName(String processName);

    /**
     * 加载流程列表
     *
     * @param query
     * @return
     */
    Page<FlowDefVo> queryList(FlowDefQuery query);

    /**
     * 获取任务的前一个任务key,加缓存
     *
     * @param processDefinitionId
     * @param taskDefinitionKey
     * @return
     */
    String prevTaskDefKey(String processDefinitionId, String taskDefinitionKey);
}
